home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / sather / faq.txt < prev    next >
Text File  |  1994-07-10  |  18KB  |  430 lines

  1.  
  2. ------------------------------------------------------------------------------
  3.  
  4. The following is a Sather FAQ; thanks to all who contributed.  This
  5. will be sent out once every few months.  If you have suggestions for
  6. the inclusion of other useful information, please send email to
  7. sather-admin@icsi.berkeley.edu.
  8.  
  9.                     .___________________________________.
  10.                     |                                   |\
  11.                     | SATHER FREQUENTLY ASKED QUESTIONS |\
  12.                     |           August 16, 1993         |\
  13.                     |___________________________________|\
  14.                      \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  15.  
  16. Q 1: What is Sather?
  17. Q 2: Is Sather a subset or superset of Eiffel?
  18. Q 3: Where does the name "Sather" come from? How do I pronounce it?
  19. Q 4: What does the "Hello World" program look like?
  20. Q 5: Where can I get a description of Sather?
  21. Q 6: Where can I get other information on Sather?
  22. Q 7: Are there freely available implementations of Sather?
  23. Q 8: What is the size of the package?
  24. Q 9: Where can I get the latest implementation?
  25. Q10: The distribution emacs directory is empty. Where is the Emacs support? 
  26. Q11: What is the future of Sather?
  27. Q12: What does the Eiffel community think about Sather?
  28. Q13: Is there a way to reduce recompiles further than "-fast"?
  29. Q14: Is the quality of Sather sufficiently useful for real world products?
  30. Q15: I want to use sdb on a ... workstation. What can I do?
  31. Q16: Can I get Sather if I don't have FTP access?
  32. ------------------------------------------------------------------------------
  33.  
  34. Q 1: What is Sather?
  35.      ~~~~~~~~~~~~~~ 
  36. Sather is an object oriented language which aims to be simple,
  37. efficient, interactive, safe, and non-proprietary. It aims to meet the
  38. needs of modern research groups and to foster the development of a
  39. large, freely available, high-quality library of efficient
  40. well-written classes for a wide variety of computational tasks. It was
  41. originally based on Eiffel but now incorporates ideas and approaches
  42. from several languages. One way of placing it in the "space of
  43. languages" is to say that it attempts to be as efficient as C, C++, or
  44. Fortran, as elegant and safe as Eiffel or CLU, and to support
  45. interactive programming and higher-order functions as well as Common
  46. Lisp, Scheme, or Smalltalk.
  47.  
  48. Sather has garbage collection, statically-checked strong typing,
  49. multiple inheritance, separate implementation and type inheritance,
  50. parameterized classes, dynamic dispatch, iteration abstraction,
  51. higher-order routines and iters, exception handling, assertions,
  52. preconditions, postconditions, and class invariants. The development
  53. environment integrates an interpreter, a debugger, and a
  54. compiler. Sather code can be compiled into C code and can efficiently
  55. link with C object files.
  56.  
  57. Sather has a very unrestrictive license aimed at encouraging
  58. contribution to the public library without precluding the use of
  59. Sather for proprietary projects.
  60.  
  61.  
  62. Q 2: Is Sather a subset or superset of Eiffel?
  63.      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  64. Neither. Valid Eiffel programs are not Sather programs, nor vice
  65. versa. Sather 0.2 was closer to being a subset of Eiffel 2.0 but even
  66. then introduced several distinct constructs primarily to improve
  67. computational performance. Eiffel 3.0 has expanded significantly in a
  68. different direction. Sather 1.0 has introduced several new constructs
  69. (eg. iteration abstraction, higher order routines, object
  70. constructors, routine and iter overloading, contravariant class
  71. interfaces, typecase) which makes the two languages quite distinct
  72. now. 
  73.  
  74. Q 3: Where does the name ``Sather'' come from? How do I pronounce it?
  75.      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  76. The Sather language gets its name from the Sather Tower (popularly
  77. known as the Campanile), the best-known landmark of the University of
  78. California at Berkeley.  A symbol of the city and the University, it
  79. is the Berkeley equivalent of the Golden Gate bridge.  Erected in
  80. 1914, the tower is modeled after St. Mark's Campanile in Venice,
  81. Italy. It is smaller and a bit younger than the Eiffel tower, and
  82. closer to most Americans -- and lovers of Venice of course.  Yet, at
  83. 307 feet it houses 50 tons of human, dinosaur and other animal bones
  84. mostly collected from the La Brea Tar Pits.  Unseen by most visitors
  85. the collection covers six floors of the tower. The way most people say
  86. the name of the language rhymes with "bather".
  87.  
  88. Q 4: What does the ``Hello World'' program look like?
  89.    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  90. In Sather 0.2, it looks like:
  91.  
  92. class HELLO is
  93.    main is OUT::s("Hello World!").nl end
  94. end
  95.  
  96. In Sather 1.0, it looks like:
  97.  
  98. class HELLO is
  99.    main is #OUT + "Hello World!\n" end
  100. end
  101.  
  102.  
  103. Q 5: Where can I get a description of Sather?
  104.    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  105.  
  106.    The Sather language definition is available via ftp from
  107. /pub/sather at ftp.ICSI.Berkeley.EDU. See the file README for more
  108. details.
  109.  
  110.    S.  Omohundro: "The Sather Language" contains the definition of the
  111. currently available implementation.
  112.  
  113.    S.  Omohundro: "The Sather 1.0 Specification" contains the
  114. definition of the revised Sather language. The 1.0 implementation is
  115. not yet available. The table of contents of the 1.0 spec is:
  116.  
  117. 1 Introduction
  118. 2 Types and Classes
  119.    2.1 Class definition lists
  120.    2.2 Class definitions
  121.    2.3 Type specifiers
  122.    2.4 Type parameter constraints and defaults
  123.    2.5 Subtyping
  124. 3 Features
  125.    3.1 Constant attribute definitions
  126.    3.2 Shared attribute definitions
  127.    3.3 Object attribute definitions
  128.    3.4 Routine definitions
  129.    3.5 Iter definitions
  130.    3.6 `include' clauses
  131. 4 Statements
  132.    4.1 Declaration statements
  133.    4.2 Simple assignment statements
  134.    4.3 Tuple assignment statements
  135.    4.4 `if' statements
  136.    4.5 `loop' statements
  137.    4.6 `return' statements
  138.    4.7 `yield' statements
  139.    4.8 `quit' statements
  140.    4.9 `case' statements
  141.    4.10 `typecase' statements
  142.    4.11 `assert' statements
  143.    4.12 `protect' statements
  144.    4.13 `raise' statements
  145.    4.14 Expression statements
  146. 5 Expressions
  147.    5.1 Local access expressions
  148.    5.2 Routine and iter call expressions
  149.    5.3 `void' expressions
  150.    5.4 Value and reference object constructor expressions
  151.    5.5 Bound routine and iter constructor expressions
  152.    5.6 Syntactic sugar expressions
  153.    5.7 `and' expressions
  154.    5.8 `or' expressions
  155.    5.9 `not' expressions
  156.    5.10 Equality and inequality test expressions
  157.    5.11 `initial' expressions
  158. 6 Lexical Structure
  159.    6.1 Boolean literal expressions
  160.    6.2 Character literal expressions
  161.    6.3 String literal expressions
  162.    6.4 Integer literal expressions
  163.    6.5 Floating point literal expressions
  164. 7 Special features
  165.    7.1 `type'
  166.    7.2 `id'
  167.    7.3 `copy'
  168.    7.4 `destroy'
  169.    7.5 `str'
  170.    7.6 `while!', `until!', and `break!'
  171.    7.7 `invariant'
  172.    7.8 `main'
  173. 8 Built-in classes
  174. 9 Interfacing with other languages
  175. 10 Acknowledgements
  176.  
  177. Q 6: Where can I get other information on Sather?
  178.      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  179. The newsgroup "comp.lang.sather" is devoted to discussion of Sather
  180. issues. All articles posted to this group are archived in
  181. "pub/sather/undigest/comp.lang.sather" on "ftp.icsi.berkeley.edu". 
  182.  
  183. There is a Sather mailing list maintained at the International
  184. Computer Science Institute (ICSI). Since the formation of the
  185. newsgroup, this list is primarily used for announcements.  To be added
  186. to or deleted from the Sather list, send a message to
  187.  
  188.            sather-request@ICSI.Berkeley.EDU.
  189.  
  190. If you have problems with Sather or related questions that are not of
  191. general interest, mail to
  192.  
  193.            sather-admin@ICSI.Berkeley.EDU.
  194.  
  195. This is also where you want to send bug reports and suggestions for
  196. improvements.  The archives of the Sather mailing list are available
  197. via anonymous ftp from pub/sather at ftp.ICSI.Berkeley.EDU.
  198.  
  199. This archive also contains Sather-related technical reports and papers
  200. in the subdirectory "paper".  See the README files for more
  201. details. Besides the language definitions listed above, you can
  202. retrieve, for instance:
  203.  
  204. license.txt:  The Sather library general public license describing
  205.           restrictions on using Sather library classes.
  206.  
  207. TR91034.ps.Z: "Sather Language Design and Performance Evaluation",
  208.           by Chu-Cheow Lim and Andreas Stolcke.
  209.  
  210. TR91047.ps.Z: "CLOS, Eiffel and Sather: A comparison",
  211.           by Heinz W. Schmidt and Stephen M. Omohundro.
  212.  
  213.  
  214. Q 7: Are there freely available implementations of Sather?
  215.    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  216. There are currently two implementations available for free.  Both
  217. share a rich set of library classes and a powerful Emacs/Epoch
  218. programming environment, but differ in the compiler and runtime
  219. system.  One is by the International Computer Science Institute,
  220. Berkeley, with additions and ports by the Division of Information
  221. Technology, Canberra, of the Australian CSIRO, and one by the
  222. University of Karlsruhe, Germany.
  223.  
  224. Karlsruhe Sather supports:
  225.  
  226.      * SPARC   SPARCstation running SunOS 4.1
  227.  
  228. It includes the `typecase' construct of Sather 1.0. Its runtime system
  229. implements dispatching more efficiently, and supports hardware and
  230. operating system exceptions via the Sather 0.2 exception handling
  231. mechanism. Moreover its closed compilation approach eliminates all
  232. unused features and leads to more compact executables.
  233.  
  234. ICSI Sather supports:
  235.  
  236.      * DS5000  Ultrix 4.2
  237.      * HP300   HP 9000/300 running HP-UX 8.0
  238.      * HPPA    HP 700/800 running HP-UX 8.0
  239.      * MIPS    RC6280/RC3230
  240.      * NeXT    Release 2.1
  241.      * SCO     SYSV R3.2
  242.      * Sequent Symmetry DYNIX(R) V3.0
  243.      * Sony    NEWS 3000
  244.      * SPARC   SunOS 4.1
  245.      * SUN386  Sun 386i  running SunOS 4.0
  246.  
  247. Other Ports known to sather-admin@ICSI.Berkeley.EDU:
  248.  
  249.      * IBM RS6000 AIX 3.1
  250.      * SGI Iris Irix 4.0       
  251.      * SGI R4000 IRIX 4.0
  252.      * MEIKO Multiprocessor INMOS T800, INTEL I860 computing surface
  253.  
  254. The current version, 0.2, implements a beta release of the language,
  255. that helped determine the best features of the upcoming Sather 1.0.
  256. The main changes and additions in Sather 1.0 are:
  257.  
  258.      * type-safety
  259.      * invariants
  260.      * separation of inheritance and subtyping
  261.      * value, function, and iterator types
  262.      * overloading
  263.  
  264. The Sather distribution includes a user manual, compiler, debugger,
  265. runtime library, applications libraries and an Emacs-based class
  266. browser, documenter, syntax-oriented editing and source-level
  267. debugging interface.
  268.  
  269. The compiler generates C as an intermediate language, and should be
  270. fairly easy to port.  Except for the very lowest levels of the runtime
  271. system and debugger interface (based on GNU gdb), the entire system is
  272. written in Sather.
  273.  
  274.  
  275. Q 8: What is the size of the package?
  276.      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  277. The tar.Z file is 4+ Mbytes, and when the system is installed it
  278. requires 20+ Mbytes including libraries.
  279.  
  280.  
  281. Q 9: Where can I get the latest implementation?
  282.      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  283.    Version 0.2i is the latest ICSI release available via ftp from
  284.  
  285.      * 128.32.201.7   USA     /pub/sather       ftp.ICSI.Berkeley.EDU
  286.      * 129.26.8.90    EUROPE  /pub/Sather       ftp.gmd.DE
  287.      * 133.137.4.3    JAPAN   /pub/lang/sather  sra.CO.JP
  288.      * 192.41.146.1   AUS     /pub/sather       lynx.csis.dit.CSIRO.AU
  289.  
  290.    Here is a typical dialog (omitting some of the response):
  291.  
  292.    > mkdir sather
  293.    > cd sather
  294.    > ftp ftp.icsi.berkeley.edu
  295.    Connected to icsia.ICSI.Berkeley.EDU.
  296.    Name (ftp.icsi.berkeley.edu:clinton): ftp
  297.    331 Guest login ok, send e-mail address as password.
  298.    Password:
  299.    230 Guest login ok, access restrictions apply.
  300.    ftp> cd pub/sather
  301.    250 CWD command successful.
  302.    ftp> bin
  303.    200 Type set to I.
  304.    ftp> get sa-0.2i.tar.Z
  305.    ftp> bye
  306.    > uncompress sa-0.2i.tar.Z
  307.    > tar xvf sa-0.2i.tar
  308.    > less README
  309.    > less doc/INSTALL
  310.    > less doc/STARTING
  311.  
  312.  
  313. Q10: The distribution emacs directory is empty. Where is the Emacs support? 
  314.      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  315. The Emacs support is now unbundled because it requires adaptations to
  316. new Emacs or Epoch releases at rates independent of the ongoing Sather
  317. development.  The latest version can be found in the directory
  318. contrib/Elisp.tar.Z on the distribution hosts.
  319.  
  320.  
  321. Q11: What is the future of Sather?
  322.      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  323. The first "official" release of Sather will be version 1.0. Work is
  324. currently underway on a combined compiler/interpreter/debugger.
  325. Initially it will compile into C for portability, but several groups
  326. have expressed interest in producing native compilers. The 1.0
  327. compiler generates an intermediate form which should be possible to
  328. pass to compiler back ends (eg. that used in GCC). 
  329.  
  330. Several institutions have expressed interest in using Sather as a
  331. teaching language. Its combination of simplicity, support for modern
  332. programming concepts, and free availability should make it ideal for
  333. this purpose. A book is being written to introduce the language and
  334. libraries. 
  335.  
  336. Parallel Sather (pSather) is a parallel version of the language,
  337. developed and in use at ICSI.  pSather addresses virtually shared,
  338. non-uniform-memory-access multiprocessor architectures.  It adds
  339. threads, synchronization, data distribution, and locality.  Multiple
  340. threads can execute in one object.  A distinguished class GATE
  341. combines various dependent low-level synchronization mechanisms
  342. efficiently: locks, futures, and conditions.  Implementations include
  343. CM-5, Sequent Symmetry, and Sparcs.  (Contact: clim@ICSI.Berkeley.EDU)
  344. Reports and papers on pSather may be obtained by anonymous ftp from
  345. /pub/sather/psather.papers at ftp.ICSI.Berkeley.EDU. A new version of
  346. pSather based on Sather 1.0 is under development.
  347.  
  348. Data-parallel Sather (dpSather) is a recent experiment for studying
  349. fine-grain deterministic parallelism at the Australian CSIRO and the
  350. Australian National University, Canberra.  Shaped collections, in the
  351. sense of the Paralation model, are classes encapsulating locality,
  352. data mapping and redistribution.  Parallelism is limited to be
  353. interference free.  Implementations are under development for MasPar
  354. and Fujitsu AP1000.  (Contact: hws@csis.dit.CSIRO.AU) Reports and
  355. papers on dpSather may be obtained by anonymous ftp from
  356. /pub/sather/dpsather.papers at lynx.csis.dit.CSIRO.AU.
  357.  
  358.  
  359. Q12: What does the Eiffel community think about Sather?
  360.    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  361.    The following extract is taken from a recent Eiffel FAQ:
  362.  
  363. "Sather is a new language patterned after Eiffel, but emphasizing
  364. efficiency and programmer convenience over software correctness,
  365. reusability, and maintenance.
  366.  
  367. "Sather simplifies some Eiffel constructs, eliminates others and adds
  368. some of its own such as built-in arrays and programmer specified
  369. dynamic dispatching.  It compiles quickly and produces smaller
  370. executables than Eiffel 2.3.4.  The Sather environment includes an
  371. Emacs editing environment, a debugger, and several hundred library
  372. classes.
  373.  
  374. "The 1.0 release of Sather is now imminent. It adds many new features
  375. that should prove attractive to creators of advanced mathematical
  376. based software.  Sather 1.0 is no longer simpler than Eiffel.  In
  377. fact, the best way to think of Sather is as Eiffel for PhD's.  Sather
  378. is still very efficient, especially for a portable, non-commercial
  379. language."
  380.  
  381.  
  382. Q13: Is there a way to reduce recompiles further than "-fast"?
  383.      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  384. You can control the granularity of incremental compilation by the
  385. classes you put in one file. The major fraction of compilation time is
  386. spent in the C compilation.  Incremental compilation only keeps track
  387. of file time-stamps.  For correctness, the compiler is conservative in
  388. deciding what to recompile.  The -fast compilation option avoids
  389. overwriting target C files that have not changed from one compilation
  390. to the next, even though sources may have changed.  "make" takes care
  391. of further target dependencies from there.
  392.  
  393.  
  394. Q14: Is the quality of Sather sufficiently useful for real world products?
  395.      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  396. The tools in the system including compiler, debugger and Emacs support
  397. have been quite stable since the first release in mid 1991.  At ICSI,
  398. we have developed several moderate-sized programs, including a
  399. connectionist simulator.  It has also been used in class teaching.
  400. Your needs may or may not be the same though.
  401.  
  402.  
  403. Q15: I want to use sdb on a ... workstation. What can I do?
  404.      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  405. The Sather debugger, sdb, is based on GNU gdb 3.6.  The distribution
  406. contains only the SPARC version.  If you have gdb for a different
  407. architecture, it should be easy to get sdb running, too.  Gdb has a
  408. few machine dependent files.  Sdb does not directly depend on these
  409. files.  You want to replace these files using the respective gdb 3.6
  410. files for your architecture.
  411.  
  412. Q16: Can I get Sather if I don't have FTP access?
  413.      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  414. ICSI is not set up to deliver Sather other than by anonymous ftp.
  415.  
  416. Fortunately, Prime Time Freeware (PTF) is a set of ISO-9660 CDroms
  417. filled with 3GB of freeware, issued semi-annually and it includes the
  418. Sather distribution.  The latest issue of PTF vol 2 contains ICSI
  419. Sather 0.2i.  PTF is distributed via bookstores and mail.  You can
  420. reach PTF using:
  421.  
  422.         Email:  ptf@cfcl.com
  423.         Fax:    [1] (408) 433 0727
  424.         Voice:  [1] (408) 433 9662
  425.         Mail:   Prime Time Freeware
  426.                 370 Altair Way, #150E
  427.                 Sunnyvale, CA 94086
  428.                 USA
  429.  
  430.